网工Python之路之paramiko 模块实验(三)读取文件
【文末赠书】
感谢知乎两位大佬:@弈心和@朱嘉盛
@弈心大佬的实验主要是基于 linux 系统、思科设备或 GNS3 模拟器完成。
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
小编这里采用eve-ng+liunx来模拟实践思科部分的实验效果,以及采用ensp+windows复现一遍华为的实验。
实验平台:Linux Centos7
使用工具:EVE-ng、python 3.6.8
实验拓扑:
注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。
【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。
实验目的:
1、在生产环境中,交换机的管理 IP 基本不可能像实验环境中这样 11 到 15,有些交换机的管理 IP 甚至在不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP 地址的最后一段来登录交换机。这里我们要额外开一个文本文件,把我们需要登录的交换机 IP 全部写进去,然后用 for loop 配合 open() 函数来批量登录所有交换机。(抄书的哈)
2、用上面的方法登录所有交换机,开启 EIGRP,然后查看状态。
准备条件:
1、实验拓扑中,LSW5 的管理地址从 192.168.242.15 改成 192.168.242.55(见实验拓扑图)。
2、创建一个名为 ip_list.txt 的文件,把 LSW1 到 LSW5 交换机的管理 IP 地址放进去。
实验环境配置
按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.242.12,这里从简。)特别注意:LSW5 的 IP 是 192.168.242.55。)
初始化
1.配置hostname 和domain-name
hostname LSW1
ip domain-name shiranit.com
2.产生密钥,产生1024位的密钥
crypto key generate rsa general-keys modulus 1024
3.配置sssh的信息
会话超时时间
ip ssh time-out 120
最大认证次数
ip ssh authentication-retries 3
启用ssh和telnet认证
line vty 0 4
transport input ssh telnet
login local
4.本地认证用户
enable passwod 123
username python privilege 15 password 123
PS: privilege 15这么设置是为了免去登陆时输入enable密码
5.配置管理地址
interface Vlan 1
ip address 192.168.242.11 255.255.255.0
实验前检查
1、按之前实验套路,对 LSW1 到 LSW5 逐一检查 PC 到 LSW1 至 LSW5 的网络连通性,如不通需要排网络,本文此处描述从简。
2、检查 LSW1 至 LSW5 当前是否开启EIGRP,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"EIGRP"就好。
更多精彩内容关注“释然IT杂谈”
Python 代码
代码讲解,大神在书里和专栏中已逐条做了解释
import paramiko
import time
import getpass
username = input("Username: ")
password = getpass.getpass("Password: ")
# 此时 ip_list.txt 需要与 lab3.py 在相同的文件夹中
f = open('ip_list.txt')
for line in f.readlines():
ip = line.strip()
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,
password=password,look_for_keys=False)
command = ssh_client.invoke_shell()
print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
print('已经成功登陆交换机 LSW-' + ip)
# 关闭分屏功能
command.send('terminal length 0 \n')
#向交换机发送指令
# 进入特权模式
command.send('en\n')
# 进入全局模式
command.send('conf t\n')
# 将开启eigrp并宣告网段
command.send('router eigrp 1\n')
command.send('net 192.168.242.0 \n')
time.sleep(2)
command.send('end\n')
command.send('wr\n')
time.sleep(2)
output = command.recv(65535).decode('ASCII')
print(output)
ssh_client.close()
执行脚本文件:
实验结果检测
查看各设备EIGRP情况。以LSW1为例就不逐一检测了。
可以看到eigrp已经配置,邻居关系也可以看到。
实验小结
实验平台:WIN10
使用工具:eNSP v1.3.00.100、python 3.7.3
注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。
【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。
实验目的:
1、在生产环境中,交换机的管理 IP 基本不可能像实验环境中这样 11 到 15,有些交换机的管理 IP 甚至在不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP 地址的最后一段来登录交换机。这里我们要额外开一个文本文件,把我们需要登录的交换机 IP 全部写进去,然后用 for loop 配合 open() 函数来批量登录所有交换机。(抄书的哈)
2、用上面的方法登录所有交换机,把华为交换机默认的 MSTP 修改成 STP。
准备条件:
1、实验拓扑中,LSW5 的管理地址从 192.168.242.15 改成 192.168.242.55(见实验拓扑图)。
2、创建一个名为 ip_list.txt 的文件,把 LSW1 到 LSW5 交换机的管理 IP 地址放进去。
3、创建一个名为commnd_list.txt的文件,放置需要配置的命令。
实验环境配置
按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.242.12,这里从简。)特别注意:LSW5 的 IP 是 192.168.242.55。)
sysname LSW1
aaa
# 密码明文 123
local-user python password cipher #*C>*$C`S!INZPO3JBXBHA!!
local-user python privilege level 3
local-user python service-type ssh
interface Vlanif1
ip address 192.168.11.11 255.255.255.0
stelnet server enable
# 下面这条很关键,我一开始没配置这条,一直 ssh 反馈有错误。
# 模拟器的产品手册说这条是默认值,但测试后需要手动配置。
ssh authentication-type default password
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh
实验前检查
1、按之前实验套路,对 LSW1 到 LSW5 逐一检查 PC 到 LSW1 至 LSW5 的网络连通性,如不通需要排网络,本文此处描述从简。
2、检查 LSW1 至 LSW5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"MSTP"就好。
更多精彩内容关注“释然IT杂谈”
Python 代码
代码讲解,大神在书里和专栏中已逐条做了解释
import paramiko
import time
import getpass
username = input("Username: ")
password = getpass.getpass("Password: ")
# 此时 ip_list.txt 需要与 lab3.py 在相同的文件夹中
f = open('ip_list.txt')
for line in f.readlines():
ip = line.strip()
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,
password=password,look_for_keys=False)
command = ssh_client.invoke_shell()
print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
print('已经成功登陆交换机 LSW-' + ip)
l = open('commnd_list.txt','r')
l.seek(0)
for line in l.readlines():
comm = line.strip()
command.send(comm + '\n')
time.sleep(2)
output = command.recv(65535).decode('ASCII')
print(output)
ssh_client.close()
执行脚本文件:
实验结果检测
检查 LSW1 至 LSW5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"STP"就好。以LSW1为例查看。
实验小结
更多精彩推荐:
网工Python之路之paramiko 模块实验(二)循环遍历
网工Python之路之paramiko 模块实验(一)初来乍到
可去知乎关注两位大佬:
https://www.zhihu.com/column/c_1357111055186104320
https://zhuanlan.zhihu.com/p/34932386
包括基础安全设施建设、安全自动化系统建设、业务安全体系建设3个部分。
第一部分介绍当进入一个安全建设空白或基本为零的企业时,如何着手规划并一步步建成较为完善的安全体系;
第二部分主要介绍安全自动化,帮助大家掌握开源的二次开发思路,设计适合企业自身特点的安全系统;
第三部分介绍业务安全体系建设,包括互联网黑产攻击手法、风控系统建设方案和业务安全风险防控体系建设实践。
三大优化思维+八处优化落点+40多个典型案例,教你轻松学会“大厂”的优化套路!
需开奖前转发此文案到朋友圈,开奖前不得删文,开奖后八小时内联系小编,过期不候。
走过路过帮忙点下小程序